// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Découvrez les Extras de Casino-Extras.fr : Jouez au Casino en Ligne en France – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Découvrez les Extras de Casino-Extras.fr : Jouez au Casino en Ligne en France

Découvrez les Bonus Exclusifs de Casino-Extras

Amateur de casino en ligne Casino-extras.fr français, ne cherchez plus ! Découvrez les Bonus Exclusifs de Casino-Extras, une sélection de offres spécialement conçues pour les joueurs de France. 1 Profitez d’un bonus de bienvenue généreux lors de votre inscription. 2 Des tours gratuits vous attendent sur certaines des machines à sous les plus populaires. 3 Ne manquez pas les promotions régulières avec des cadeaux en argent réel. 4 Bénéficiez d’un programme de fidélité avantageux qui récompense votre activité de jeu. 5 Des offres exclusives vous sont proposées tout au long de l’année. 6 Jouez à vos jeux de casino préférés et débloquez des bonus supplémentaires. 7 Les membres VIP ont accès à des avantages exclusifs, tels que des bonus hebdomadaires et des cadeaux d’anniversaire. 8 Rejoignez dès maintenant Casino-Extras et découvrez un monde de bonus et de promotions qui vous sont réservés !

Casino-Extras

Découvrez les Casino-Extras qui rendent votre expérience de jeu en ligne en France encore plus excitante ! Profitez de tours gratuits, de bonus de dépôt généreux, de programmes de fidélité attrayants et d’offres de cashback. Participez à des tournois passionnants et tentez de gagner des jackpots progressifs. Ne manquez pas non plus les dernières sorties de jeux et les mises à jour de logiciels. Avec Casino-Extras, chaque partie est un nouvel événement rempli de surprises et de gains potentiels. Jouez dès maintenant et vivez une expérience de casino en ligne inoubliable en France !

Découvrez les Extras de Casino-Extras.fr : Jouez au Casino en Ligne en France

Jouez au Casino en Ligne en France avec Casino-Extras

Si vous cherchez à jouer au casino en ligne en France, Casino-Extras est là pour vous. Nous proposons une large sélection de jeux de casino en ligne, y compris les machines à sous, la roulette, le blackjack et le vidéo poker. Vous pouvez jouer gratuitement ou pour de l’argent réel, selon vos préférences.
Nous offrons également des bonus et des promotions exclusives pour les joueurs français, y compris des tours gratuits, des bonus de dépôt et des récompenses de fidélité. Vous pouvez profiter de ces offres tout en jouant à vos jeux de casino préférés.
Chez Casino-Extras, nous nous engageons à fournir une expérience de jeu en ligne sûre et sécurisée. Nous utilisons les dernières technologies de cryptage pour protéger vos informations personnelles et financières, vous pouvez donc jouer en toute confiance.
De plus, notre équipe de service client est disponible 24h/24 et 7j/7 pour répondre à toutes vos questions ou préoccupations. Vous pouvez nous contacter par téléphone, e-mail ou chat en direct à tout moment.
Alors n’hésitez plus, rejoignez dès maintenant Casino-Extras et découvrez pourquoi nous sommes le meilleur choix pour les joueurs de casino en ligne en France. Jouez dès maintenant et profitez de tous les avantages que nous offrons!

Découvrez les Programmes de Fidélité de Casino-Extras

Découvrez les Programmes de Fidélité de Casino-Extras, disponibles dès maintenant pour les joueurs français. Ces programmes offrent de nombreux avantages, notamment des points de récompense, des bonus exclusifs et un accès prioritaire à de nouveaux jeux. En tant que membre fidèle, vous pouvez également bénéficier de cadeaux personnalisés et d’invitations à des événements spéciaux. Ne manquez pas l’occasion de maximiser votre expérience de jeu en ligne avec Casino-Extras. Inscrivez-vous dès aujourd’hui et commencez à accumuler des récompenses!

Découvrez les Extras de Casino-Extras.fr : Jouez au Casino en Ligne en France

Casino-Extras

Découvrez les Casino-Extras disponibles dans les casinos en ligne français ! Profitez de tours gratuits exclusifs, de bonus de dépôt généreux et d’offres de cashback régulières. Participez à des tournois de machines à sous passionnants et remportez des prix en argent réel. Inscrivez-vous dès maintenant et réclamez votre bonus de bienvenue pour commencer votre aventure de jeu en ligne en France. Ne manquez pas non plus les programmes de fidélité qui vous offrent des récompenses supplémentaires pour votre activité de jeu. Avec autant d’avantages supplémentaires à offrir, il n’est pas étonnant que les casinos en ligne soient devenus si populaires en France. Essayez-les dès aujourd’hui et découvrez ce que les Casino-Extras peuvent faire pour vous !

Découvrez les Extras de Casino-Extras.fr : Jouez au Casino en Ligne en France

Boostez Votre Solde avec les Promotions de Casino-Extras

Si vous êtes à la recherche de moyens pour augmenter votre solde de casino en ligne, vous êtes au bon endroit! Chez Casino-Extras, nous proposons régulièrement des promotions exclusives qui vous aideront à booster votre bankroll.
1. Profitez de nos offres de bienvenue généreuses pour les nouveaux joueurs, qui peuvent inclure des bonus de dépôt et des tours gratuits.
2. Gardez un œil sur nos offres de recharge hebdomadaires pour obtenir des bonus supplémentaires sur vos dépôts.
3. Ne manquez pas nos tournois de machines à sous passionnants avec des prix en argent garantis.
4. Inscrivez-vous à notre newsletter pour être informé des dernières offres et promotions.
5. Participez à nos programmes de fidélité pour accumuler des points et échanger contre des récompenses exclusives.
6. Profitez de nos offres de cashback pour récupérer une partie de vos pertes.
7. Essayez nos jeux de table avec croupier en direct pour une expérience de casino authentique et des récompenses supplémentaires.
8. Référez des amis à Casino-Extras et recevez des bonus de parrainage pour chaque nouveau joueur inscrit.

Je m’appelle Jacques, j’ai 45 ans et je suis un grand fan de casino en ligne. J’ai récemment découvert Casino-Extras.fr et je dois dire que leur offre est vraiment exceptionnelle. Les jeux sont variés, les graphismes sont nets et les fonctionnalités supplémentaires sont vraiment intéressantes. J’adore les tours gratuits et les bonus qui me permettent de jouer plus longtemps et d’augmenter mes chances de gagner.

Je suis Sophie, j’ai 32 ans et je suis une joueuse régulière de casino en ligne. J’ai essayé de nombreux sites différents, mais Casino-Extras.fr est définitivement mon préféré. Leur service client est excellent, les dépôts et retraits sont rapides et faciles, et les jeux sont vraiment amusants. J’apprécie également les fonctionnalités supplémentaires qui me donnent des avantages supplémentaires lorsque je joue.

Bonjour, je m’appelle Pierre et j’ai 50 ans. Je suis un joueur de casino en ligne occasionnel et je dois dire que Casino-Extras.fr est un site très agréable à utiliser. Les jeux sont faciles à comprendre et à jouer, et les fonctionnalités supplémentaires sont un bonus agréable. Bien que je ne sois pas un joueur régulier, je recommande certainement ce site à tous ceux qui cherchent un endroit amusant et fiable pour jouer en ligne.

Découvrez les Extras de Casino-Extras.fr : Jouez au Casino en Ligne en France

Avez-vous déjà entendu parler des Extras de Casino-Extras.fr ? Il s’agit de nombreux avantages exclusifs offerts par notre casino en ligne aux joueurs français.

Vous vous demandez peut-être ce que sont ces Extras ? Il peut s’agir de bonus de dépôt, de tours gratuits, de cashback et bien plus encore.

Mais comment en profiter ? Il vous suffit de créer un compte sur notre site et de faire un dépôt. Vous aurez alors accès à tous les Extras disponibles.

Pourquoi choisir Casino-Extras.fr ? Nous offrons une expérience de jeu en ligne de qualité, avec une large sélection de jeux, un service clientèle de premier ordre et des mesures de sécurité strictes.

Design and Develop by Ovatheme